package 简单算法;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: 胡成
 * @Version: 0.0.1V
 * @Date: 2019-05-16
 * @Description: 给你一个整数n. 从 1 到 n 按照下面的规则打印每个数
 * 如果这个数被3整除，打印fizz.
 * 如果这个数被5整除，打印buzz.
 * 如果这个数能同时被3和5整除，打印fizz buzz.
 * 如果这个数既不能被 3 整除也不能被 5 整除，打印数字本身。
 **/
public class FizzBuzz {
    public static void main(String[] args) {
        FizzBuzz fizzBuzz = new FizzBuzz();
        System.out.println(fizzBuzz.fizzBuzz(15));
    }

    public List<String> fizzBuzz(int n) {
        // write your code here
        List<String> results = new ArrayList<>();
        int start = 1, end = n;
//        dfs(start, end, results);
        for (int i = start; i <= end; i++) {
            if (i % 3 == 0 && i % 5 == 0) {
                results.add("fizz buzz");
            } else if (i % 3 == 0) {
                results.add("fizz");
            } else if (i % 5 == 0) {
                results.add("buzz");
            } else {
                results.add(String.valueOf(i));
            }
        }
        return results;
    }

    public void dfs(int start, int end, List<String> results) {
        if (start > end) {
            return;
        } else {
            if (start % 3 == 0 && start % 5 == 0) {
                results.add("fizz buzz");
            } else if (start % 3 == 0) {
                results.add("fizz");
            } else if (start % 5 == 0) {
                results.add("buzz");
            } else {
                results.add(String.valueOf(start));
            }
            dfs(++start, end, results);
        }
    }
}
